package drds.server.handler;

import java.util.List;

import drds.server.datasource.IConnectionHolder;

public interface Handler {

	/**
	 * 无法获取连接
	 */
	public void connectionError(IConnectionHolder connectionHolder, Throwable e);

	/**
	 * 已获得有效连接的响应处理
	 */
	void connectionAcquired(IConnectionHolder connectionHolder);

	/**
	 * 收到OK数据包的响应处理
	 */
	void okResponse(IConnectionHolder connectionHolder, byte[] okBytes);

	/**
	 * 收到错误数据包的响应处理
	 */
	void errorResponse(IConnectionHolder connectionHolder, byte[] errorBytes);

	/**
	 * 收到字段数据包结束的响应处理
	 */
	void fieldEofResponse(IConnectionHolder connectionHolder, byte[] headerBytes, List<byte[]> fieldBytesList, byte[] eofBytes);

	/**
	 * 收到行数据包的响应处理
	 */
	void rowResponse(IConnectionHolder connectionHolder, byte[] rowBytes);

	/**
	 * 收到行数据包结束的响应处理
	 */
	void rowEofResponse(IConnectionHolder connectionHolder, byte[] eofBytes);

	/**
	 * 写队列为空，可以写数据了
	 * 
	 */
	void writeQueueAvailable();

	/**
	 * on connetion close event
	 */
	void connectionClose(IConnectionHolder connectionHolder, String reason);

}